package com.ruoyi.common.utils;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneOffset;

public class TimeStampUtils {

    // 获取今天0点0分0秒的时间戳（13位）
    public static long getStartTimeStamp() {
        // 获取今天的日期
        LocalDate today = LocalDate.now();
        // 构建今天的0点0分0秒
        LocalDateTime startOfDay = today.atStartOfDay();
        // 转换为毫秒级时间戳
        return startOfDay.atZone(ZoneOffset.UTC).toInstant().toEpochMilli();
    }

    // 获取今天23点59分59秒的时间戳（13位）
    public static long getEndTimeStamp() {
        // 获取今天的日期
        LocalDate today = LocalDate.now();
        // 构建今天的23点59分59秒
        LocalDateTime endOfDay = LocalDateTime.of(today, LocalTime.of(23, 59, 59));
        // 转换为毫秒级时间戳
        return endOfDay.atZone(ZoneOffset.UTC).toInstant().toEpochMilli();
    }

    // 根据传的时间获取与当天相加后的时间戳（13位）
    public static long getTimeStampByDate(int date) {
        // 获取当前日期时间，精确到秒
        LocalDateTime now = LocalDateTime.now().withNano(0); // 确保时间精确到秒，去除纳秒部分
        // 当前日期加7天
        LocalDateTime nextWeek = now.plusDays(date);

        // 转换为毫秒级时间戳
        return nextWeek.toEpochSecond(ZoneOffset.UTC) * 1000; // 使用UTC时区转换为秒后乘以1000得到毫秒
    }

}
